/**
 * @file export_with_constroctor.c
 * @author Linquan  
 * @brief   1、该框架中，main函数无法退出，无法测试析构函数。仅可测试构造函数.
 * 			2、会产生 特性 "destructor" 未采用参数警告，忽略。
 * 			3、使用的是 __attribute__ ((destructor(prio_num)))这一语法规则进行的测试
 * 			4、默认序号从100开始
 * 
 * @version 1.0
 * @date 2024-06-12
 * 
 * @copyright Copyright (c) 2024
 * 
 */

#include "app_config.h"
#if TEST_EXOORT_WITH_CONSTRUCTOR




#include <stdio.h>
#include "../../middle/serve/export.h"


int a = 32;
int b[2] = {0};

/***********声明 已存在的构造函数、析构函数 ****************/
 static void before(void) CONSTRUCTOR(104);
 static void after(void)  DESTRUCTOR(101);


static void before()
{
	printf("constructor before main finish\n");
}

static void after()
{
    printf("constructor after \n");
}



/******* 自行通过宏 定义 构造函数  ********/

EXPORT_CONSTRUCTOR(befor1,101)
{
	b[0] += a;

	printf("constructor before mian 101 ,b0 = %d \n",b[0]);
}

static EXPORT_CONSTRUCTOR(befor2,102)
{
	b[1] += a;
	printf("constructor before mian  102 ,b1 = %d \n",b[1]);
}

EXPORT_CONSTRUCTOR(befor3,103)
{
	a = b[0] + b[1];
	printf("constructor before mian  103, a = %d\n",a);
}

#endif
 
















